package edu.sias.article.service;

import edu.sias.article.entity.Article;

import java.util.List;
import java.util.Optional;

public interface ArticleService {
    /**
     * 创建文章
     * @param article 文章对象
     * @return 创建后的文章对象
     */
    Article createArticle(Article article);

    /**
     * 获取所有文章
     * @return 文章列表
     */
    List<Article> getArticles();

    /**
     * 根据文章 ID 获取文章
     * @param id 文章 ID
     * @return 文章对象的 Optional
     */
    Optional<Article> getArticleById(Long id);

    /**
     * 更新文章
     * @param id 文章 ID
     * @param updatedArticle 更新后的文章对象
     * @return 更新后的文章对象的 Optional
     */
    Optional<Article> updateArticle(Long id, Article updatedArticle);

    /**
     * 删除文章
     * @param id 文章 ID
     */
    void deleteArticle(Long id);

    /**
     * 为文章添加评论
     *
     * @param id             文章 ID
     * @param commentContent 评论内容
     * @param currentUserId
     * @return 添加评论后的文章对象的 Optional
     */
    Optional<Article> addCommentToArticle(Long id, String commentContent, Long currentUserId);
}    